package xin.marcher.module.lifecycle.service;

import xin.marcher.module.common.core.PageResult;
import xin.marcher.module.lifecycle.domain.dto.*;
import xin.marcher.module.lifecycle.domain.request.ItemExpriReslutPageRequest;
import xin.marcher.module.lifecycle.domain.request.ItemPeriodRequest;
import xin.marcher.module.lifecycle.domain.request.ItemPeriodStagePageQueryRequest;
import xin.marcher.module.lifecycle.domain.request.QueryPeriodListRequest;
import xin.marcher.module.lifecycle.domain.response.ItemPeriodStageResponse;

import java.util.List;

/**
 *
 */
public interface ItemPeriodStageService {
    /**
     * 创建商品状态及商品生命周期状态
     *
     * @param itemPeriodRequest
     * @return
     */
    ItemPeriodStageResultDTO saveItemPeriodStage(ItemPeriodRequest itemPeriodRequest);

    /**
     * 根据itemId查询商品生命周期
     *
     * @param itemId
     * @return
     */
    ItemExpriResultDTO queryItemExpriResultByItemId(String itemId);

    /**
     * 分页查询商品生命周期数据
     *
     * @param request
     * @return
     */
    PageResult<ItemPeriodStageDTO> queryItemPeriodStageByPage(ItemPeriodStagePageQueryRequest request);

    /**
     * 根据itemId查询商品生命周期
     *
     * @param itemId
     * @return
     */
    ItemPeriodStageDTO queryProductPeriod(String itemId);


    /**
     * 更新商品生命周期状态
     *
     * @param itemPeriodStageDTO
     * @return
     */
    ItemPeriodStageResponse updateProductPeriod(ItemPeriodStageDTO itemPeriodStageDTO);

    /**
     * 更新商品生命周期考核结果&可采可补可售状态
     *
     * @param itemPeriodStageDetailDTO
     * @return
     */
    Boolean updateProductPeriodMarketExpri(ItemPeriodStageDetailDTO itemPeriodStageDetailDTO);

    /**
     * 根据商品idList查询商品生命周期信息
     *
     * @param request
     * @return
     */
    List<ItemExpriResultDTO> queryItemExpriResult(QueryPeriodListRequest request);

    /**
     * 分页查询商品考核结果
     *
     * @param request
     * @return
     */
    PageResult<ItemExpriResultDTO> queryItemExpriResultByPage(ItemExpriReslutPageRequest request);

    /**
     * 分页批量查询商品考核结果
     *
     * @param request
     * @return
     */
    List<ItemExpriResultToExcelDTO> queryItemExpriResultBatch(ItemExpriReslutPageRequest request);
}
